// multiple lambda arguments means argument list wraps
res1 = foo.toMap(
  (elem) -> elem.toString(),
  (elem) -> elem.toString().split("").map((str) -> str + "hello").toSet()
)

// new object and trailing lambda means argument list wraps
res2 = foo.doFoo(
  new Listing { 1; 2; 3 },
  (elem) -> elem.toString().split("").map((str) -> str + "hello").toSet()
)

// single trailing lambda is broken on its own
res4 = foo.foldLeft(
  "heeeeeeelloooooooooooooooooooooooooooooooooooooooooooooo",
  (elem) -> elem.foooooooooooooooooooooooooooooooooooooooooooooooooooo
)

res5 = ifNonNull((it) -> someFunctionCall(it as SomeReaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalyLongTypeName))

res6 = ifNonNull((it) -> someFunctionCall(it as SomeReaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalyLongTypeNameLonger))

res7 =
  qux(bar, (a) ->
    hello // some comment
  )

res8 = qux(
  // some comment
  (a) -> bar
)

res9 =
  qux(bar, new {
    bar = 1
  } // some comment
  )

res10 = (a) -> hello // some comment

res11 =
  qux(bar, (a) ->
    hello
    // some comment
  )
